package leetcode101.practice;

/**
 * @author Synhard
 * @version 1.0
 * @Class Singleton
 * @Description TODO
 * @tel 13001321080
 * @email 823436512@qq.com
 * @date 2021-03-22 21:27
 */
public class Singleton {
//    // 1. 私有化指向实例的引用
//    private static Singleton instance = null;
//
//    // 2. 私有化构造器
//    private Singleton() {
//
//    }
//
//    // 3. 对外暴露获取实例的接口
//    public static Singleton getInstance() {
//        if (instance == null) {
//            synchronized (Singleton.class) {
//                if (instance == null) {
//                    instance = new Singleton();
//                }
//            }
//        }
//        return instance;
//    }

    // 1. 私有化实例的引用
    private static Singleton instance = null;

    // 2. 私有化构造器
    private Singleton() {

    }

    // 3. 对外暴露获取实例的方法
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
